import Vue from 'vue'
import App from './App.vue'
//引入两个全局组件Header、Footer
//正常说:Header、Footer称之为组件VueCompoent构造函数,但是脚手架使用的是Vue.extend简写方式---[对象]
import Header from '@/components/header';
import Footer from '@/components/footer';
import TypeCategory from '@/components/typeCategory'
import Pagination from '@/components/pagination'
//注册全局组件:
//第一个参数全局组件名字[组件配置项name要书写东西->undefined]
//第二个参数:那个组件变为全局组件
Vue.component(Header.name, Header);
Vue.component(Footer.name, Footer);
Vue.component(TypeCategory.name, TypeCategory);
Vue.component(Pagination.name, Pagination)
//入口文件引入路由器并进行注册
import router from './router';
//引入仓库
import store from './store';
import './permission';
//引入mockServe.js
import '@/mock/mockServe';


//统一引入
import * as API from '@/api';

//element-ui按需引入
import { MessageBox, Message } from 'element-ui';
//弹框
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$message = Message;

//图片懒加载
import VueLazyload from 'vue-lazyload'
import dog from '@/assets/images/1.gif';
import cat from '@/assets/images/2.gif';

Vue.use(VueLazyload, {
  error: cat,//加载图片失败
  loading: dog,//加载图片的设置
})

//引入表单验证问题
import '@/utils/validate'



new Vue({
  beforeCreate() {
    //全局事件总线配置
    Vue.prototype.$bus = this;
    //把全部请求函数[API对象:里面包含全部请求函数]挂到原型上 
    Vue.prototype.$ajax = API;
  },
  render: h => h(App),
  //注册路由器:底下这行代码作用，给全部VC[路由组件、非路由组件]添加两个属性$route|$router
  router,
  //注册大仓库:给全部的VC身上添加一个$store这样的属性
  store
}).$mount('#app')
